package kubernetes

import (
	"errors"
	"github.com/gin-gonic/gin"
	"k8s-admin/models"
	"k8s-admin/service/kubernetes"
	"k8s-admin/utils"
)

// 添加集群
func CreateK8sCluster(ctx *gin.Context) {
	params := new(models.Configs)
	err := ctx.ShouldBindJSON(&params)
	if err != nil {
		utils.ReturnContext(ctx).Failed("失败", errors.New("请传入必填参数").Error())
	} else {
		err = kubernetes.NewK8sInterface().AddK8sCluster(params)
		if err != nil {
			utils.ReturnContext(ctx).Failed("失败", err.Error())
		} else {
			utils.ReturnContext(ctx).Successful("成功", "集群添加成功")
		}

	}

}

// 获取集群列表
func ListK8sCluster(ctx *gin.Context) {
	params := new(struct {
		Limit int `form:"limit"`
		Page  int `form:"page"`
	})

	err := ctx.ShouldBind(&params)
	if err != nil {
		utils.ReturnContext(ctx).Failed("失败", err)
	}
	cluster, err := kubernetes.NewK8sInterface().ListK8sCluster(params.Limit, params.Page)
	if err != nil {
		utils.ReturnContext(ctx).Failed("失败", err.Error())
	} else {
		utils.ReturnContext(ctx).Successful("成功", cluster)
	}
}

// 删除集群
func DeleteK8sCluster(ctx *gin.Context) {
	params := new(struct {
		CID []string `json:"cid" binding:"required"`
	})
	if err := ctx.ShouldBindJSON(&params); err != nil {
		utils.ReturnContext(ctx).Failed("失败", err.Error())
	} else {
		err = kubernetes.NewK8sInterface().DeleteK8sCluster(params.CID)
		if err != nil {
			utils.ReturnContext(ctx).Failed("失败", err.Error())
		} else {
			utils.ReturnContext(ctx).Successful("成功", "集群已删除")
		}
	}
}
